using System;
using ns27;
using Triton.Game.Mono;

namespace Triton.Game.Mapping
{
	[Attribute38("BoxDoor")]
	public class BoxDoor : MonoBehaviour
	{
		public enum State
		{
			CLOSED,
			OPENED
		}

		public static float BOX_SLIDE_PERCENTAGE_PHONE => MonoClass.smethod_6<float>(TritonHs.MainAssemblyPath, "", "BoxDoor", "BOX_SLIDE_PERCENTAGE_PHONE");

		public Box m_parent => method_3<Box>("m_parent");

		public BoxDoorStateInfo m_info => method_3<BoxDoorStateInfo>("m_info");

		public State m_state => method_2<State>("m_state");

		public bool m_master => method_2<bool>("m_master");

		public Vector3 m_startingPosition => method_2<Vector3>("m_startingPosition");

		public BoxDoor(IntPtr address, string className)
			: base(address, className)
		{
		}

		public BoxDoor(IntPtr address)
			: this(address, "BoxDoor")
		{
		}

		public void Awake()
		{
			method_8("Awake");
		}

		public Box GetParent()
		{
			return method_14<Box>("GetParent", Array.Empty<object>());
		}

		public void SetParent(Box parent)
		{
			method_8("SetParent", parent);
		}

		public BoxDoorStateInfo GetInfo()
		{
			return method_14<BoxDoorStateInfo>("GetInfo", Array.Empty<object>());
		}

		public void SetInfo(BoxDoorStateInfo info)
		{
			method_8("SetInfo", info);
		}

		public void EnableMaster(bool enable)
		{
			method_8("EnableMaster", enable);
		}

		public bool IsMaster()
		{
			return method_11<bool>("IsMaster", Array.Empty<object>());
		}

		public bool ChangeState(State state)
		{
			return method_11<bool>("ChangeState", new object[1] { state });
		}

		public void UpdateState(State state)
		{
			method_8("UpdateState", state);
		}
	}
}
